home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 September
/
CHIP Eylül 1998.iso
/
Slackwar
/
docs
/
Thai-HOWTO
< prev
next >
Wrap
Text File
|
1997-07-27
|
38KB
|
968 lines
The Linux Thai HOWTO
Poonlap Veeratanabutr, poon-v@fedu.uec.ac.jp <mailto:poon-
v@fedu.uec.ac.jp>
v0.3, 16 July 1997
This document describes how to set Linux to use Thai language. This
means at least, you can read and write Thai plain text document, name
filename in Thai and use some applications with Thai characters. I
use Linux Slackware96, the path name I describe here may be different
to other distributions.
1. Introduction
My motivation comes from ZzzThai Project
<http://www.fedu.uec.ac.jp/ZzzThai> by uecthai@fedu.uec.ac.jp
<mailto:uecthai@fedu.uec.ac.jp>, which describe how to use Thai with
many computer platforms. I joined this project, started from windows95
then I felt Linux is more interesting.
This is the early version of Thai HOWTO. It is not complete yet. The
things I did not describe here, printing Thai document, Thai Tex, etc.
I will try to describe them in later version.
Thai standard character codes is TIS620. Thai character codes are in
the same range as iso_8859_1, so we can treat it as iso_8859_1 type.
Now it seems to be iso_8859_11 standard. See
http://www.nectec.or.th/it-standards/iso8859-11
<http://www.nectec.or.th/it-standards/iso8859-11> about this new
standard. With X11R6 there is information about Thai in
/usr/X11/include/X11/keysymdef.h and
/usr/X11/lib/X11/locale/th_TH.TACTIS. You may look in these directory
or file for your information. For now, it is better to treat Thai
character as iso_8859_1 and it works well.
Thai characters are not like Latin characters. There are many position
in Thai character, normal position, character on other characters,
character under other characters. There is not space in sentences.
These are some problems in developing Thai word-processor.
You can find the lastest version of this HOWTO document on
http://www.fedu.uec.ac.jp/ZzzThai/Linux
<http://www.fedu.uec.ac.jp/ZzzThai/Linux>
2. Thai Input and Output
2.1. Linux console
2.1.1. Thai fonts
You can obtain Linux Thai console fonts which created by Khun Phaisarn
Techajaruwong from
ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux/Fonts
<ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux/Fonts>
For example, there is a font name "phaisarn.psf". You can load the new
font from Linux console by command
%setfont phaisarn.psf
You should put Thai fonts (psf format) in /usr/lib/kbd/consolefonts/.
If you want Thai font to be loaded automatically when you boot the
machine, create the file /etc/rc.d/rc.font (Slackware) as the follow¡
ing.
#!/bin/sh
#
# This selects your default screen font from among the ones in
# /usr/lib/kbd/consolefonts.
#
setfont phaisarn.psf
2.1.2. Keyboard layout
You can set keyboard behavior as you like by using loadkeys command.
Usually, you use loadkeys to load the file located in
/usr/lib/kbd/keytables. You can create the map file and save in this
directory. This is the sample.
# thai.map
# This thai.map was modified by Poonlap Veeratanabutr (poon-v@fedu.uec.ac.jp)
# from us.map. Map Thai Kedmanee keyboard to US keyboard.
# 28 April 1997
# Thai/Us toggle key is AltGr(right alt).
keycode 0 =
keycode 1 = Escape Escape
alt keycode 1 = Meta_Escape
keycode 2 = +one exclam +aring plus
alt keycode 2 = Meta_one
alt shift keycode 2 = Meta_exclam
keycode 3 = +two at +slash ntilde
control keycode 3 = nul
control shift keycode 3 = nul
alt keycode 3 = Meta_two
alt shift keycode 3 = Meta_at
keycode 4 = +three numbersign +underscore ograve
control keycode 4 = Escape
alt keycode 4 = Meta_three
alt shift keycode 4 = Meta_numbersign
keycode 5 = +four dollar +Agrave oacute
control keycode 5 = Control_backslash
alt keycode 5 = Meta_four
alt shift keycode 5 = Meta_dollar
keycode 6 = +five percent +paragraph ocircumflex
control keycode 6 = Control_bracketright
alt keycode 6 = Meta_five
alt shift keycode 6 = Meta_percent
keycode 7 = +six asciicircum +Ooblique Ugrave
control keycode 7 = Control_asciicircum
alt keycode 7 = Meta_six
alt shift keycode 7 = Meta_asciicircum
keycode 8 = +seven ampersand +Odiaeresis ssharp
control keycode 8 = Control_underscore
alt keycode 8 = Meta_seven
keycode 9 = +eight asterisk +currency otilde
control keycode 9 = Delete
alt keycode 9 = Meta_eight
keycode 10 = +nine parenleft +mu Odiaeresis
alt keycode 10 = Meta_nine
keycode 11 = +zero parenright +diaeresis division
alt keycode 11 = Meta_zero
keycode 12 = +minus underscore +cent oslash
control keycode 12 = Control_underscore
control shift keycode 12 = Control_underscore
alt keycode 12 = Meta_minus
keycode 13 = +equal plus +ordfeminine ugrave
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete Delete Delete
alt keycode 14 = Meta_Delete
keycode 15 = Tab Tab Tab Tab
alt keycode 15 = Meta_Tab
keycode 16 = +q Q +ae eth
keycode 17 = +w W +adiaeresis quotedbl
keycode 18 = +e E +Oacute registered
keycode 19 = +r R +threequarters plusminus
keycode 20 = +t T +ETH cedilla
keycode 21 = +y Y +Ntilde iacute
keycode 22 = +u U +Otilde ecircumflex
keycode 23 = +i I +Atilde threesuperior
keycode 24 = +o O +onesuperior Idiaeresis
keycode 25 = +p P +Acircumflex hyphen
keycode 26 = +bracketleft braceleft +masculine degree
control keycode 26 = Escape
alt keycode 26 = Meta_bracketleft
alt shift keycode 26 = Meta_braceleft
keycode 27 = +bracketright braceright +Aring comma
control keycode 27 = Control_bracketright
alt keycode 27 = Meta_bracketright
alt shift keycode 27 = Meta_braceright
keycode 28 = Return Return Return Return
alt keycode 28 = 0x080d
keycode 29 = Control Control Control Control
keycode 30 = +a A +questiondown Adiaeresis
keycode 31 = +s S +Ediaeresis brokenbar
keycode 32 = +d D +exclamdown macron
keycode 33 = +f F +acute acircumflex
keycode 34 = +g G +agrave notsign
keycode 35 = +h H +eacute ccedilla
keycode 36 = +j J +egrave ediaeresis
keycode 37 = +k K +Ograve Eacute
keycode 38 = +l L +Ecircumflex Egrave
keycode 39 = +semicolon colon +Ccedilla guillemotleft
alt keycode 39 = Meta_semicolon
keycode 40 = +apostrophe quotedbl +section period
control keycode 40 = Control_g
alt keycode 40 = Meta_apostrophe
keycode 41 = +grave asciitilde +minus percent
control keycode 41 = nul
alt keycode 41 = Meta_grave
keycode 42 = Shift Shift Shift Shift
keycode 43 = +backslash bar +sterling yen
control keycode 43 = Control_backslash
alt keycode 43 = Meta_backslash
alt shift keycode 43 = Meta_bar
keycode 44 = +z Z +onequarter parenleft
keycode 45 = +x X +guillemotright parenright
keycode 46 = +c C +aacute copyright
keycode 47 = +v V +Iacute Icircumflex
keycode 48 = +b B +Ocircumflex Uacute
keycode 49 = +n N +multiply igrave
keycode 50 = +m M +periodcentered question
keycode 51 = +comma less +Aacute twosuperior
alt keycode 51 = Meta_comma
alt shift keycode 51 = Meta_less
keycode 52 = +period greater +atilde Igrave
alt keycode 52 = Meta_period
alt shift keycode 52 = Meta_greater
keycode 53 = +slash question +onehalf AE
control keycode 53 = Delete
alt keycode 53 = Meta_slash
keycode 54 = Shift Shift Shift Shift
keycode 55 = KP_Multiply
keycode 56 = Alt Alt Alt Alt
keycode 57 = space space space space
control keycode 57 = nul
alt keycode 57 = Meta_space
keycode 58 = Caps_Lock Caps_Lock Caps_Lock Caps_Lock
keycode 59 = F1 F11 Console_13
control keycode 59 = F1
alt keycode 59 = Console_1
control alt keycode 59 = Console_1
keycode 60 = F2 F12 Console_14
control keycode 60 = F2
alt keycode 60 = Console_2
control alt keycode 60 = Console_2
keycode 61 = F3 F13 Console_15
control keycode 61 = F3
alt keycode 61 = Console_3
control alt keycode 61 = Console_3
keycode 62 = F4 F14 Console_16
control keycode 62 = F4
alt keycode 62 = Console_4
control alt keycode 62 = Console_4
keycode 63 = F5 F15 Console_17
control keycode 63 = F5
alt keycode 63 = Console_5
control alt keycode 63 = Console_5
keycode 64 = F6 F16 Console_18
control keycode 64 = F6
alt keycode 64 = Console_6
control alt keycode 64 = Console_6
keycode 65 = F7 F17 Console_19
control keycode 65 = F7
alt keycode 65 = Console_7
control alt keycode 65 = Console_7
keycode 66 = F8 F18 Console_20
control keycode 66 = F8
alt keycode 66 = Console_8
control alt keycode 66 = Console_8
keycode 67 = F9 F19 Console_21
control keycode 67 = F9
alt keycode 67 = Console_9
control alt keycode 67 = Console_9
keycode 68 = F10 F20 Console_22
control keycode 68 = F10
alt keycode 68 = Console_10
control alt keycode 68 = Console_10
keycode 69 = Num_Lock
keycode 70 = Scroll_Lock Show_Memory Show_Registers
control keycode 70 = Show_State
alt keycode 70 = Scroll_Lock
keycode 71 = KP_7
alt keycode 71 = Ascii_7
keycode 72 = KP_8
alt keycode 72 = Ascii_8
keycode 73 = KP_9
alt keycode 73 = Ascii_9
keycode 74 = KP_Subtract
keycode 75 = KP_4
alt keycode 75 = Ascii_4
keycode 76 = KP_5
alt keycode 76 = Ascii_5
keycode 77 = KP_6
alt keycode 77 = Ascii_6
keycode 78 = KP_Add
keycode 79 = KP_1
alt keycode 79 = Ascii_1
keycode 80 = KP_2
alt keycode 80 = Ascii_2
keycode 81 = KP_3
alt keycode 81 = Ascii_3
keycode 82 = KP_0
alt keycode 82 = Ascii_0
keycode 83 = KP_Period
altgr control keycode 83 = Boot
control alt keycode 83 = Boot
keycode 84 = Last_Console
keycode 85 =
keycode 86 = less greater bar
alt keycode 86 = Meta_less
keycode 87 = F11 F11 Console_23
control keycode 87 = F11
alt keycode 87 = Console_11
control alt keycode 87 = Console_11
keycode 88 = F12 F12 Console_24
control keycode 88 = F12
alt keycode 88 = Console_12
control alt keycode 88 = Console_12
keycode 89 =
keycode 90 =
keycode 91 =
keycode 92 =
keycode 93 =
keycode 94 =
keycode 95 =
keycode 96 = KP_Enter
keycode 97 = Control
keycode 98 = KP_Divide
keycode 99 = Control_backslash
control keycode 99 = Control_backslash
alt keycode 99 = Control_backslash
keycode 100 = AltGr_Lock
keycode 101 = Break
keycode 102 = Find
keycode 103 = Up
keycode 104 = Prior
shift keycode 104 = Scroll_Backward
keycode 105 = Left
alt keycode 105 = Decr_Console
keycode 106 = Right
alt keycode 106 = Incr_Console
keycode 107 = Select
keycode 108 = Down
keycode 109 = Next
shift keycode 109 = Scroll_Forward
keycode 110 = Insert
keycode 111 = Remove
altgr control keycode 111 = Boot
control alt keycode 111 = Boot
keycode 112 =
keycode 113 =
keycode 114 =
keycode 115 =
keycode 116 =
keycode 117 =
keycode 118 =
keycode 119 =
keycode 120 =
keycode 121 =
keycode 122 =
keycode 123 =
keycode 124 =
keycode 125 =
keycode 126 =
keycode 127 =
string F1 = "\033[[A"
string F2 = "\033[[B"
string F3 = "\033[[C"
string F4 = "\033[[D"
string F5 = "\033[[E"
string F6 = "\033[17~"
string F7 = "\033[18~"
string F8 = "\033[19~"
string F9 = "\033[20~"
string F10 = "\033[21~"
string F11 = "\033[23~"
string F12 = "\033[24~"
string F13 = "\033[25~"
string F14 = "\033[26~"
string F15 = "\033[28~"
string F16 = "\033[29~"
string F17 = "\033[31~"
string F18 = "\033[32~"
string F19 = "\033[33~"
string F20 = "\033[34~"
string Find = "\033[1~"
string Insert = "\033[2~"
string Remove = "\033[3~"
string Select = "\033[4~"
string Prior = "\033[5~"
string Next = "\033[6~"
string F21 = ""
string F22 = ""
string F23 = ""
string F24 = ""
string F25 = ""
string F26 = ""
Suppose you save this file as thai.map. To load this file
%loadkeys thai.map
To switch to Thai input press the right Alt key. If you want to switch
to English press the right Alt key again. To set Thai keymap as
default (Slackware), after you put thai.map in /usr/lib/kbd/keytables
create the file /etc/rc.d/rc.keymap like the sample.
#!/bin/sh
#
# Loadkeys will look for thai.map in /usr/lib/kbd/keytables
#
loadkeys thai
The thai.map will be automatically loaded when you boot the machine.
For RedHat, change the content of the file /etc/sysconfig/keyboard.
2.2. X Window system
2.2.1. Thai fonts
To display Thai characters in X Window system, you must have Thai
fonts for X Window system. You can obtain Thai fonts in bdf format or
pcf format on internet.
ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/UNIX/Fonts
<ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/UNIX/Fonts>
http://thaigate.rd.nacsis.ac.jp/files/thaifonts.html
<http://thaigate.rd.nacsis.ac.jp/files/thaifonts.html>
http://www.nectec.ac.th/pub/software/i18n/thai
<http://www.nectec.ac.th/pub/software/i18n/thai>
These fonts usually come in tar or gz format. You must extract it by
using command tar or gunzip. You will get a lot of
2.2.1.1. Installing Thai fonts
You must log in as root. Let's put Thai fonts in
/usr/X11/lib/X11/fonts/misc/ change directory to
/usr/X11/lib/X11/fonts/misc/ and run command
#mkfontdir
This command will update font database file. If you run this command
in X Windows system, you may need to restart X window to take effect.
2.2.2. Thai keyboard layout
2.2.2.1. Thai keyboard layout with xmodmap
You can use the utility xmodmap to map Thai keyboard. Normally
xmodmap is used to load the the file. There is the file .Xmodmap in
/use/X11/lib/X11/xinit/. This file will be load if you don't have
~.xinitrc/ and .Xmodmap(in Slackware). The file
/usr/X11/lib/X11/xinit/.Xmodmap doesn't map all keys. It only solves
the Backspace/Delete key's problem. The following is the sample
.Xmodmap for Thai Kedmanee keyboard layout.
!
! Linux/XFree86 Thai Kedmanee layout (based on US keyboard)
! Generated on Mon May 26 22:59:56 1997
! by Poonlap Veeratanabutr (poon-v@fedu.uec.ac.jp)
! Use ScrollLock to switch to Thai keyboard.
! This file will work with XFree86 only.
!
keycode 0x09 = Escape
keycode 0x43 = F1
keycode 0x44 = F2
keycode 0x45 = F3
keycode 0x46 = F4
keycode 0x47 = F5
keycode 0x48 = F6
keycode 0x49 = F7
keycode 0x4A = F8
keycode 0x4B = F9
keycode 0x4C = F10
keycode 0x5F = F11
keycode 0x60 = F12
keycode 0x6F = Print
keycode 0x4E = Mode_switch XF86ModeLock
keycode 0x6E = Pause
keycode 0x31 = grave asciitilde minus percent
keycode 0x0A = 1 exclam aring plus
keycode 0x0B = 2 at slash ntilde
keycode 0x0C = 3 numbersign underscore ograve
keycode 0x0D = 4 dollar Agrave oacute
keycode 0x0E = 5 percent paragraph ocircumflex
keycode 0x0F = 6 asciicircum Ooblique Ugrave
keycode 0x10 = 7 ampersand Odiaeresis ssharp
keycode 0x11 = 8 asterisk currency otilde
keycode 0x12 = 9 parenleft mu odiaeresis
keycode 0x13 = 0 parenright diaeresis division
keycode 0x14 = minus underscore cent oslash
keycode 0x15 = equal plus ordfeminine ugrave
keycode 0x33 = backslash bar sterling yen
keycode 0x16 = BackSpace
keycode 0x6A = Insert
keycode 0x61 = Home
keycode 0x63 = Prior
keycode 0x4D = Num_Lock
keycode 0x70 = KP_Divide
keycode 0x3F = KP_Multiply
keycode 0x52 = KP_Subtract
keycode 0x17 = Tab
keycode 0x18 = q Q ae eth
keycode 0x19 = w W adiaeresis quotedbl
keycode 0x1A = e E Oacute registered
keycode 0x1B = r R threequarters plusminus
keycode 0x1C = t T ETH cedilla
keycode 0x1D = y Y Ntilde iacute
keycode 0x1E = u U Otilde ecircumflex
keycode 0x1F = i I Atilde threesuperior
keycode 0x20 = o O onesuperior Idiaeresis
keycode 0x21 = p P Acircumflex hyphen
keycode 0x22 = bracketleft braceleft masculine degree
keycode 0x23 = bracketright braceright Aring comma
keycode 0x24 = Return
keycode 0x6B = Delete
keycode 0x67 = End
keycode 0x69 = Next
keycode 0x4F = KP_7
keycode 0x50 = KP_8
keycode 0x51 = KP_9
keycode 0x56 = KP_Add
keycode 0x42 = Caps_Lock
keycode 0x26 = a A questiondown Adiaeresis
keycode 0x27 = s S Ediaeresis brokenbar
keycode 0x28 = d D exclamdown macron
keycode 0x29 = f F acute acircumflex
keycode 0x2A = g G agrave notsign
keycode 0x2B = h H eacute ccedilla
keycode 0x2C = j J egrave ediaeresis
keycode 0x2D = k K Ograve Eacute
keycode 0x2E = l L Ecircumflex Egrave
keycode 0x2F = semicolon colon Ccedilla guillemotleft
keycode 0x30 = apostrophe quotedbl section period
keycode 0x53 = KP_4
keycode 0x54 = KP_5
keycode 0x55 = KP_6
keycode 0x32 = Shift_L
keycode 0x34 = z Z onequarter parenleft
keycode 0x35 = x X guillemotright parenright
keycode 0x36 = c C aacute copyright
keycode 0x37 = v V Iacute Icircumflex
keycode 0x38 = b B Ocircumflex Uacute
keycode 0x39 = n N multiply igrave
keycode 0x3A = m M periodcentered question
keycode 0x3B = comma less Aacute twosuperior
keycode 0x3C = period greater atilde Igrave
keycode 0x3D = slash question onehalf AE
keycode 0x3E = Shift_R
keycode 0x62 = Up
keycode 0x57 = KP_1
keycode 0x58 = KP_2
keycode 0x59 = KP_3
keycode 0x6C = KP_Enter
keycode 0x25 = Control_L
keycode 0x40 = Alt_L Meta_L
keycode 0x41 = space
keycode 0x71 = Alt_R Meta_R
keycode 0x6D = Control_R
keycode 0x64 = Left
keycode 0x68 = Down
keycode 0x66 = Right
keycode 0x5A = KP_0
keycode 0x5B = KP_Decimal
clear Shift
clear Lock
clear Control
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5
add Shift = Shift_L Shift_R
add Lock = Caps_Lock
add Control = Control_L Control_R
add Mod1 = Alt_L Alt_R
add Mod2 = Mode_switch
Put this sample file in your home directory. If you have .xinitrc or
.xsession in your home directory, add the following line in those
files.
xmodmap ~/.Xmodmap
Thai/US toggle key is assigned to keycode 0x4E (78), Scroll Lock key
with the statement
keycode 0x4E = Mode_switch XF86ModeLock
XF86ModeLock is the special keysym for XFree86 X server. If you don't
add this keysym, you have to hold the scroll lock key while you are
typing Thai characters. Note that if you use accelerated X, some key¡
codes are different. You may have to map keyboard by yourself. I rec¡
ommend xkeycaps utility to config you keyboard behavior. You can get
xkeycaps lastest version from
http://home.netscape.com/people/jwz/xkeycaps
<http://home.netscape.com/people/jwz/xkeycaps>. I submited the above
xmodmap file to Mr.Jamie Zawinski who created xkeycaps so you can find
above map file from xkeycaps too.
Note: If you are using XFree86 version 3.1.2D or later, you need to
add the line XkbDisable in keyboard section in the XF86Config file. If
necessary you may config the keyboard section like the example.
Section "Keyboard"
Protocol "Standard"
AutoRepeat 500 5
LeftAlt Meta
RightAlt ModeShift
ScrollLock ModeLock
RightCtl Compose
XkbDisable
EndSection
2.2.2.2. XFree86 3.1.2D or later and Thai keyboard layout.
Beginning with XFree86 3.1.2D, you can use the new X11R6.1 XKEYBOARD
extension to manage the keyboard layout. This is very helpful. You can
set Thai keyboard layout in 2 ways. First with traditional xmodmap,
second with XFree86 configuration.
During X server configuration with xf86config you will be asked about
XKB, if you want to to set Thai keyboard layout for your system, say
yes. There are a list of preconfigured keymaps. Choose Standard
101-key, Thai encoding.
XF86Setup is the graphical configuration utility for XFree86.
XF86Setup is normally used to either perform the initial setup of
the XFree86 X servers or to make adjustments to the existing
configuration. It is easier than traditional xf86config. You can see
the keyboard layout with this tool.
Ther are many choices of switch key to select. The default is
Alt+RightShift switch to Thai and Alt+LeftShift switch to US. You can
input Thai characters but Thai fonts are not provided.
I found that preconfigured keymaps that came with XFree86-3.2 (RedHat
4.2) is not correct. You may not be able to type THO THUNG which
located at "5 key". To fix this problem, you should add the line
key <AE05> { [], [ paragraph, ocircumflex ] };
in the file /usr/X11R6/lib/X11/xkb/symbols/th as the example.
key <AE03> { [], [ minus, ograve ] };
key <AE04> { [], [ Agrave, oacute ] };
key <AE05> { [], [ paragraph, ocircumflex ] };
key <AE06> { [], [ Ooblique, Ugrave ] };
key <AE07> { [], [ Odiaeresis, ssharp ] };
You can not type SORUSI also. Please change the line from
key <AC08> { [], [ Ograve, eacute ] };
to
key <AC08> { [], [ Ograve, Eacute ] };
Note that eacute is MAITHO and Eacute is SORUSI.
There are also XKB extension utilities such as setxkbmap, xkbcomp,
etc. Please see man page for more information.
The following is the example. It is the part of XF86Config file in
keyboard section. This configuration uses the default toggle key.
Section "Keyboard"
Protocol "Standard"
AutoRepeat 500 5
LeftAlt Meta
RightAlt Meta
ScrollLock Compose
RightCtl Control
# XkbDisable
XkbKeycodes "xfree86"
XkbTypes "default"
XkbCompat "default"
XkbSymbols "us(pc101)"
XkbGeometry "pc"
XkbRules "xfree86"
XkbModel "pc101"
XkbLayout "th"
EndSection
If you use XKB extension, Thai keyboard mapping with xmodmap may not
work.
3. Applications with Thai characters
This is the tricky part. Most applications support iso_8859_1
characters or 8-bit characters. For example, emacs can display
iso_8859_1 character. If we set emacs to display iso_8859_1 and use
Thai font, you can edit Thai document with emacs.
You should define the environment LC_CTYPE to iso_8859_1 in
/etc/profile (for bash users) and /etc/csh.cshrc (for tcsh users).
Similarly you should (for the sake of principle) put something like
this in your
*basicLocale: C
*timeFormat: C
*numeric: C
*displayLang: iso_8859_1
*inputLang: iso_8859_1
If you use libc-4.x.xx you should set LC_CTYPE to ISO-8859-1 instead
of iso_8859_1.
These are some of applications which can use with Thai characters and
how to config them. To make X window application displays Thai font,
you should run the application with -fn option. For example,
#xterm -fn thai8x16
If you don't want to fill -fn option every time you run application.
You should set Thai font in your ~/.Xdefaults or ~/.Xresources like
this
XTerm*font: NameOfThaifont
3.1. Non-network applications
3.1.1. xterm
There are several programs running under xterm such as shell, pine,
vi, etc. Don't forget to use Thai font with xterm as I mention above.
bash :
New versions of bash (v1.14.1+) only need to have LC_CTYPE set
to iso_8859_1, but if you have problems put the following in
your /etc/inputrc or ~/.inputrc file:
set meta-flag on
set convert-meta off
set output-meta on
I actually don't set LC_CTYPE environment variable to iso_8859_1
because this environment variable will effect other applications
too. With bash shell, you can specify which environment variable to
be passed to the application. I can make tterm (Thai Terminal) with
this syntax.
LC_CTYPE=iso_8859_1 xterm -fn thai8x16
It is helpful if you alias the commands like this in
alias tterm='LC_CTYPE=iso_8859_1 xterm -fn thai8x16'
alias temacs='LC_CTYPE=iso_8859_1 emacs -fn -etl-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1'
alias ls='ls -F -N --color'
To run xterm with bash shell that accepts Thai characters, you just
run tterm. You can type Thai characters in command line. That
means you can name filenames in Thai.
tcsh :
Put the following in your /etc/csh.cshrc or .tcshrc file:
setenv LC_CTYPE iso_8859_1
Note: If this doesn't work, your copy of tcsh was probably not com¡
piled with NLS support or possibly it's version 6.03 or lower.
ls :
Issue the command as
ls -N
or possibly
ls --8bit
You may set alias in ~/.bashrc or ~/.cshrc, so you can type ls
without option. If you don't use ls with -N option, you may see
Thai filename as ?????.
less :
Set the following environment variable:
LESSCHARSET=latin1
3.1.2. emacs
In version 19.26 or later of GNU emacs for X11 you can simply set the
environment variable LC_CTYPE to iso_8859_1. If you use an older
version or use emacs under plain Linux put the following in your
~/.emacs or the the system-wide initialization file (probably
/usr/lib/emacs/site-lisp/default.el):
(standard-display-european t)
(set-input-mode (car (current-input-mode))
(nth 1 (current-input-mode))
0)
If you run emacs already, press Esc-x and type standard-display-
european in minibuffer, this command will tell emacs to display 8-bit
character.
If you use bash shell you can run emacs in this way,
LC_CTYPE=iso_8859_1 emacs -fn -etl-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1
This will set LC_CTYPE=iso_8859_1 for emacs only.
Because some Thai characters have 0 width, cursor's position may be
not in the right place. you should use the fonts from mule. You can
get these fonts from
ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/UNIX/Fonts/Mule/etl_fonts.tar
<ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/UNIX/Fonts/Mule/etl_fonts.tar>
Therefore I use the font -etl-fixed-medium-r-
normal--16-160-72-72-m-80-tis620.2529-1 in an example.
3.1.3. vi
Vi should be run on xterm that uses Thai font.
3.1.4. xedit
Run xedit with -fn option like xterm. This application can display
Thai characters in the right position.
3.2. Network applications
3.2.1. E-mail
You can not send Thai E-mail with mail command. Mail command transfers
mail in 7 bit. You should use mail application that supports MIME such
as pine or elm.
elm:
Put the following definitions in your ~/.elm/elmrc file:
charset = iso-8859-1
displaycharset = iso-8859-1
textencoding = 8bit
This may not work on some versions of elm.
pine :
Put the following definition in your ~/.pinerc file:
# Reflects capabilities of the display you have. Default: US-ASCII.
# Typical alternatives include ISO-8859-x, (x is a number between 1 and 9).
character-set=ISO-8859-1
This can also be set via the Setup option in pine. You can find it
under Config.
3.2.2. tin
Put the following definitions in your ~/.tin/headers file:
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Now you can post messages with the proper Danish characters in the
message body.
3.2.3. lynx
Put the following definition in your ~/.lynxrc file:
character_set=ISO Latin 1
This can also be set via the Options menu in lynx. Type `o' and set
the relevant option.
3.2.4. Netscape
If you have Thai fonts in your system. You just select Thai fonts from
Options | General Preferences | Fonts. Thai fonts will appear in
ISO-8859-1 or in User defined. See
http://www.fedu.uec.ac.jp/ZzzThai/unix
<http://www.fedu.uec.ac.jp/ZzzThai/unix> for setting Thai language on
Netscape.
3.3. Thai Applications on X window.
As I know. There are few Thai applications on X window.
Likit is the Thai editor and mail sender (by uuencode) that does not
need Thai font. Likit was created by Khun Vuthichai Ampornaramveth.
You can find this application from thaigate site.
If you are using Tex or Latex, you may want to use Thai Tex. This is
the work of Dr. Manop Wongsaisuwan and his friends at Tokyo Institute
of technology. You can also find Thai tex on
http://thaigate.nacsis.ac.jp/files/ttex.html
<http://thaigate.nacsis.ac.jp/files/ttex.html>.
Txterm, this is Thai xterm version. I don't know much about this.
Xzthai, this is the Tcl/Tk application for mapping Thai keyboard on US
keyboard with graphical user interface. Also provides simple editor
and keyboard layout figure. You need to have Thai font. It actually
uses xmodmap program in background to map US keyboard and Thai
keyboard. This program was created by me. See
http://www.fedu.uec.ac.jp/ZzzThai/xio/xzthai.html
<http://www.fedu.uec.ac.jp/ZzzThai/xio/xzthai.html>
3.4. Other Tips.
Now you can configure the applications to be more Thai environment.
Because Xt based applications allows user to configure the
applications by resources. We can make the menu or label to be Thai
language.
For example, if you want xman to display Thai labels. You may add
these lines in your .Xdefaults
!! Xman section
Xman*Font: thai8x16
Xman*helpButton.Label: ¬Φ╟┬
Xman*quitButton.Label: ══í
Xman*manpageButton.Label: ñ┘Φ┴╫═í╥├π¬Θ
4. References and FTP sites
4.1. Other documents of relevance
The HOWTOs ought to be available from all mirrors of sunsite.unc.edu.
The Linux Danish/International HOWTO by Niels Kristian Bech Jensen
The Linux Cyrillic HOWTO by Alexander L. Belikoff
The Keystroke mini-HOWTO by Zenon Fortuna.
The Locales mini-HOWTO by Peeter Joot. (This one is mainly for
developers.)
The ISO-8859-1 FAQ and Programming for Internationalization FAQ (plus
much more) by Michael Gschwind is available from his homepage
<http://www.vlsivie.tuwien.ac.at/mike/i18n.html>.
NACSIS R& D Thai Project Page <http://thaigate.rd.nacsis.ac.jp> You
can get information about Thai computing here.
ZzzThai Project <http://www.fedu.uec.ac.jp/ZzzThai/>, by The group of
students in The University of Electro-Communications, Tokyo. Describe
how to use Thai with many computer platforms.
Vuthichai's Page <http://www.ctrl.titech.ac.jp:80/~vuthi/>, contains
information about Thai computing by Khun Vuthichai Ampornaramveth.
4.2. FTP and Web sites
NACSIS R & D Thai Project : http://thaigate.rd.nacsis.ac.jp
<http://thaigate.rd.nacsis.ac.jp> You can find Thai tex on this site.
ZzzThai Project : http://www.fedu.uec.ac.jp/ZzzThai
<http://www.fedu.uec.ac.jp/ZzzThai>
Vuthichai's Homepage : http://www.ctrl.titech.ac.jp:80/~vuthi/
<http://www.ctrl.titech.ac.jp:80/~vuthi/>
SunSite <ftp://sunsite.unc.edu/pub/linux/> and mirrors. doc/howto has
the above mentioned HOWTOs. utils/nls and subdirectories contain files
related to National Language Support. Developers should take a look
at locale-tutorial-0.8.txt.gz, locale-pack-0.8.tar.gz and cat-
pack.tar.gz.
The GNU archives <ftp://prep.ai.mit.edu/pub/gnu/> has the recode
package for character table conversion, the ABOUT-NLS file and the
gettext package for locale support of some GNU applications and (of
course) the latest versions of GNU emacs.
5. Acknowledgments and Copyright
Some parts of this HOWTO comes from The Linux Danish/International
HOWTO by Thomas Petersen, petersen@post1.tele.dk (the original author)
and Niels Kristian Bech Jensen, nkbj@image.dk.
Thank you to Phaisarn Techajaruwong for building Thai fonts and
valuable discussion. Thank you to Thai students at The University of
Electro-Communications and Khun Vuthichai Ampornaramveth for every
help.
This HOWTO is copyrighted by Poonlap Veeratanabutr, poon-
v@fedu.uec.ac.jp. It is distributed as other Linux HOWTOs under the
terms described below.
Linux HOWTO documents may be reproduced and distributed in whole or in
part, in any medium physical or electronic, as long as this copyright
notice is retained on all copies. Commercial redistribution is allowed
and encouraged; however, the authors would like to be notified of any
such distributions.
All translations, derivative works, or aggregate works incorporating
any Linux HOWTO documents must be covered under this copyright notice.
That is, you may not produce a derivative work from a HOWTO and impose
additional restrictions on its distribution. Exceptions to these rules
may be granted under certain conditions; please contact the Linux
HOWTO coordinator at the address given below.
If you have questions, please contact Greg Hankins, the Linux HOWTO
coordinator, at gregh@sunsite.unc.edu <mailto:gregh@sunsite.unc.edu>
via email.